let jwt = require('jsonwebtoken');
// token组成部分
// token的头部信息(记录令牌类型、签名算法)
// token的有效载荷(用户信息)
// token的签名方式(签名)

// 签名字段
let privateKey = 'houtaitoken';

// 生成token的函数
function createToken(payloadObj, exTime) {
    // 有效载荷,签名,过期时间
    let relToken = jwt.sign(payloadObj, privateKey, { expiresIn: exTime });
    return relToken;
};


// 有效载荷
let userInfo = {
    username: 'xiaohao',
    signin: true
};
let expiresTime = 60 * 60;

// console.log(createToken(userInfo, expiresTime));

// 校验token方法
function verifyToken(tokenData) {
    return new Promise((resolve, reject) => {
        jwt.verify(tokenData, privateKey, function(err, data) {
            console.log(data);
            if (err) {
                // 失败结果
                reject(err)
            } else {
                // 成功结果
                resolve(data)
            }
        });
    })
};

// { username: 'xiaohao', signin: true, iat: 1665975666, exp: 1665979266 }
// verifyToken('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InhpYW9oYW8iLCJzaWduaW4iOnRydWUsImlhdCI6MTY2NTk3NTY2NiwiZXhwIjoxNjY1OTc5MjY2fQ.OlxxuZNEeHA5rq0_bMuGGDR9yj4v-QYDoVqz8DmB3jw')

module.exports = {
    createToken,
    verifyToken
};